package com.dc.commons.shiro.session;

import org.apache.shiro.session.mgt.SimpleSession;
/*******************************************************************************<P>
 * 文件名: DcSession.java <br>
 * 版本: 1.0<br>
 * 描述:<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2015年12月23日 上午12:36:48<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 *****************************************************************************
 */
public class DcSession extends SimpleSession {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/*******************************************************************************<P>
	 * 文件名: DcSession.java <br>
	 * 版本: 1.0<br>
	 * 描述: Shiro Session 扩展<br>
	 * 版权所有: <br>
	 * <P>
	 * 创建者: 王建栋 <br>
	 * 创建日期: 2015年12月23日 上午12:37:48<br>
	 * 修改者: <br>
	 * 修改日期: <br>
	 * 修改说明: <br>
	 *****************************************************************************
	 */
	public static enum SessionStatus{
		/**
		 * 在线
		 */
		OnLine("在线"),
		/**
		 * 离开
		 */
		Hidden("离开"),
		/**
		 * 被强退
		 */
		Forced("强退");
		
		/**
		 * 内容
		 */
		private String text;
		SessionStatus(String text){
			this.text=text;
		}
		public String getText(){
			return text;
		}
	}
	
	
	public DcSession(){
		this.status=SessionStatus.OnLine;
	}
	
	private SessionStatus status;
	private String userAgent;
	private String msg;
	
	/**
	 * 获得 Session 状态
	 * @return status
	 */
	public SessionStatus getStatus() {
		return status;
	}
	
	/**
	 * 设置Session状态
	 * @param status
	 */
	public void setStatus(SessionStatus status) {
		this.status = status;
	}
	
	/**
	 * 获得浏览器信息
	 * @return userAgent
	 */
	public String getUserAgent() {
		return userAgent;
	}
	
	/**
	 * 设置浏览器状态
	 * @param userAgent
	 */
	public void setUserAgent(String userAgent) {
		this.userAgent = userAgent;
	}
	
	/**
	 * 获得Session信息
	 * @return msg
	 */
	public String getMsg() {
		return msg;
	}
	
	/**
	 * 设置Session状态
	 * @param msg
	 */
	public void setMsg(String msg) {
		this.msg = msg;
	}
	
	
	/**
	 * 慎重啊， 由于直接覆盖了 isValid 导致 找了整整1天，被标记后 在Spring中直接报异常
	 * @return boolean 
	 */
	public boolean isDcValid() {
		return status!=SessionStatus.Forced&&super.isValid();
	}
	
	
	
	
	
}
